import Express from 'express';
import bodyParser from 'body-parser';
import session from 'express-session';
import config from '../config';
import controllers from './controllers';

const port = config.apiPort;
const app = new Express();

// Universal渲染的服务端指的是前端服务器，尽管可以在前端服务器中进行读/写数据库、用户认证等，
// 但是由于前端服务器和客户端公用一套代码，所以不管出于安全的考虑，还是因为模块分离方面的因素，都应该将API服务器独立出去。

// API服务器不限定必须使用Node.js编写，不过这里不仅选择了Node.js，还使用了ES2015的语法和新特性。

// API服务的编写并不是本书的重点，我们仅用它做测试，所以这里只编写了一些控制器，并监听由配置文件所指定的端口。如果在真实项目中，还需要做更多的配置。

app.use(bodyParser.json());

app.use(session({
  secret: 'react redux book !!!!',
  resave: false,
  saveUninitialized: false,
  cookie: { maxAge: 60000 }
}));

controllers(app);

app.listen(port, (error) => {
  if (error) {
    console.error(error);
  } else {
    console.info('==> 🌎  API Listening on port %s. ', port);
  }
});
